import { http } from "@/utils/http";
import type { ApiResponse } from "./user";

/** 今日新增统计数据 */
export interface TodayStats {
  /** 今日新增用户数 */
  newUsers: number;
  /** 今日新增文章数 */
  newArticles: number;
  /** 今日新增评论数 */
  newComments: number;
  /** 昨日新增用户数 */
  yesterdayUsers: number;
  /** 昨日新增文章数 */
  yesterdayArticles: number;
  /** 昨日新增评论数 */
  yesterdayComments: number;
  /** 用户增长率（%） */
  userGrowthRate: number;
  /** 文章增长率（%） */
  articleGrowthRate: number;
  /** 评论增长率（%） */
  commentGrowthRate: number;
}

/** 平台活跃度统计数据 */
export interface ActivityStats {
  /** 日活跃用户数（DAU） */
  dailyActiveUsers: number;
  /** 周活跃用户数（WAU） */
  weeklyActiveUsers: number;
  /** 月活跃用户数（MAU） */
  monthlyActiveUsers: number;
  /** 昨日活跃用户数 */
  yesterdayActiveUsers: number;
  /** 上周活跃用户数 */
  lastWeekActiveUsers: number;
  /** 上月活跃用户数 */
  lastMonthActiveUsers: number;
  /** 日活跃度增长率（%） */
  dauGrowthRate: number;
  /** 周活跃度增长率（%） */
  wauGrowthRate: number;
  /** 月活跃度增长率（%） */
  mauGrowthRate: number;
}

/** 内容增长趋势统计数据 */
export interface GrowthTrendStats {
  /** 日期列表（近7天） */
  dates: string[];
  /** 用户新增趋势数据 */
  userTrend: number[];
  /** 文章新增趋势数据 */
  articleTrend: number[];
  /** 评论新增趋势数据 */
  commentTrend: number[];
  /** 活跃用户趋势数据 */
  activeUserTrend: number[];
  /** 用户总数趋势 */
  totalUserTrend: number[];
  /** 文章总数趋势 */
  totalArticleTrend: number[];
  /** 评论总数趋势 */
  totalCommentTrend: number[];
}

/** 完整仪表盘数据 */
export interface DashboardData {
  /** 今日新增统计 */
  todayStats: TodayStats;
  /** 平台活跃度统计 */
  activityStats: ActivityStats;
  /** 内容增长趋势统计 */
  growthTrendStats: GrowthTrendStats;
}

/** 仪表盘数据响应结果 */
export type DashboardDataResult = ApiResponse<DashboardData>;

/** 今日新增统计响应结果 */
export type TodayStatsResult = ApiResponse<TodayStats>;

/** 平台活跃度统计响应结果 */
export type ActivityStatsResult = ApiResponse<ActivityStats>;

/** 内容增长趋势统计响应结果 */
export type GrowthTrendStatsResult = ApiResponse<GrowthTrendStats>;

// ==================== API 接口函数 ====================

/** 获取完整仪表盘数据 */
export const getDashboardDataApi = () => {
  return http.request<DashboardDataResult>("get", "/admin/dashboard/data");
};

/** 获取今日新增统计 */
export const getTodayStatsApi = () => {
  return http.request<TodayStatsResult>("get", "/admin/dashboard/today-stats");
};

/** 获取平台活跃度统计 */
export const getActivityStatsApi = () => {
  return http.request<ActivityStatsResult>(
    "get",
    "/admin/dashboard/activity-stats"
  );
};

/** 获取内容增长趋势统计 */
export const getGrowthTrendStatsApi = () => {
  return http.request<GrowthTrendStatsResult>(
    "get",
    "/admin/dashboard/growth-trend-stats"
  );
};
